Het ER model
Chapeau
Een ER model bestaat uit de volgende onderdelen:
- entiteiten: een entiteit kan worden gezien als een ding, een "tastbaar" iets dat deel uitmaakt van het datamodel. Voorbeelden hiervan zijn: een auto, een werknemer, een lied of een gebied.
- verwantschappen: een verwantschap geeft het verband weer tussen twee of meer entiteiten, zoals "een werknemer werkt in een fabriek"; "werkt in" is hier de verwantschap tussen de entiteiten werknemer en fabriek.
- attributen: een attribuut is een eigenschap van een entiteit of verwantschap. Zo heeft een werknemer (onder andere) een voornaam, een achternaam, een woonplaats en een sofinummer. Het attribuut dat wordt gebruikt als unieke aanduiding van de entiteit (de primaire sleutel), wordt onderstreept weergegeven.
Elk van deze zaken wordt in een ER diagram weergegeven met een bepaald symbool weergegeven. Een entiteit wordt met een rechthoek weergegeven, een verwantschap met een ruit (verbonden met lijnen aan de betrokken entiteiten) en een attribuut wordt als een ovaal weergegeven.
Entiteittypes
Wat zijn entiteitstypes?
- Objecten waarover wij gegevens willen verzamelen
- Fysiek (klant, leverancier) of conceptueel (beroep, job)
- Een entiteit heeft kenmerken of eigenschappen (attributen)
- levnr, leveranciersnaam, leveranciersadres, …
- Onbekende waarden (null values)
- Type versus individueel voorkomen
- Classificatie versus instantiatie
- Entiteittype versus entiteit
- Entiteittype is een verzameling van entiteiten met gelijksoortige kenmerken (attributen)
- Attribuut versus attribuuttypen
Verschillende soorten entiteittypen
- Gewoon entiteittype
- Zwak entiteittype (‘weak entity type’)
- entiteittype dat niet over (voldoende) eigen attribuuttypen beschikt om een sleutel te vinden
- voorbeeld: datamodel van hotelketen
- entiteittypen: hotel, kamer, ...
- attribuuttypen:
- hotel: hotelnaam, ...
- kamer: kamernummer, prijs, ...
- kamer is een zwak entiteittype
- sleutel kamer: kamernummer, hotelnaam
- een zwak entiteittype is altijd bestaansafhankelijk
- het omgekeerde gaat niet op: bestaanafhankelijkheid hoeft niet noodzakelijk het bestaan van een zwak entiteittype te impliceren.
Attribuuttypes
- Enkelvoudige en samengestelde attribuuttypen
- Enkelvoudig (atomic): bv. levnummer
- Samengesteld: bv. levadres
- Single-valued en multiple-valued attribuuttypen
- single-valued: bv. levnummer
- multi-valued: bv. levadres (onder de assumptie dat een leverancier tegelijk meerdere adressen kan hebben)
- Sleutelattribuuttypen
- verzameling van één of meer attribuuttypen waarvan de waarden toelaten om een entiteit op een unieke wijze te identificeren
- één: bv. leverancier (levnummer)
- meer: bv. vlucht (vluchtnummer, datum)
- Uniqueness constraint
Verwantschapstypes (relationship types)
- Een relationshiptype representeert een verzameling gelijksoortige verbanden tussen entiteiten
- een relationship is een individueel voorkomen van dergelijk verband
- een relationshiptype heeft een naam
- bv. het relationshiptype in_bestelling modelleert de verbanden tussen leveranciers en aankooporders
- Ook relationshiptypen kunnen over attribuuttypen beschikken
- Indien de waarden van sommige attributen bepaald worden door een samenstelling van entiteiten uit een relationship, treden er attribuuttypen op voor dat relationshiptype
- bv. het relationshiptype aankoopvoorwaarden: levtermijn
- Indien de waarden van sommige attributen bepaald worden door een samenstelling van entiteiten uit een relationship, treden er attribuuttypen op voor dat relationshiptype
- Graad van een relationshiptype: het aantal entiteittypen dat gebruikt is bij het tot stand komen van het verband
- 1 -> unair relationshiptype
- 2 -> binair relationshiptype (bv. relationshiptype ‘in bestelling’)
- 3 -> ternair relationshiptype
- Associatie-typen (rollen) bepalen de zin waarin een verband moet worden opgevat
- bv. het verband (‘in bestelling’) tussen leveranciers en aankooporders kan zowel vanaf leverancier, als vanaf aankooporder beschouwd worden
- iedere rol heeft een naam
- bv. relationshiptype ‘in_bestelling’: rollen lev-ao en ao-lev
- Cardinaliteit van een rol: het aantal keren dat een entiteit in die rol kan of moet optreden
- minimale cardinaliteit: 0 of 1
- 0: als het in die rol niet is vereist dat elke entiteit met een andere entiteit is gekoppeld (partiële participatie), bv. lev-ao
- 1: iedere entiteit moet minstens éénmaal in die rol optreden (bestaansafhankelijkheid), bv. ao-lev
- maximale cardinaliteit: 1 of n
- 1: als het in een rol is vereist dat met een entiteit maximaal één ander entiteit mag zijn gekoppeld, bv. ao-lev
- n: als een entiteit, in een rol, met een onbepaald aantal entiteiten mag zijn gekoppeld, bv. lev-ao
- 4 mogelijke combinaties: 0..1, 0..n, 1..1, 1..n
- minimale cardinaliteit: 0 of 1
Voorbeelden
Een andere formole voorstelling van Fric-Frac:
2018-06-03 11:53:04